<?
	session_start();	
	ob_start("ob_gzhandler");
	
	require "config.php";

	// lib.php에는 쿼리를 작성하고 보내고 가져오고 하는 과정을 짧게 줄이기 위해 함수로 짜 놓았음.
	// 꼭 DB쪽 함수가 아니라도 몇가지 자잘한 함수도 있음.
	// 허접하지만 설명도 써 넣었으니 필요할때 가져다 쓰면 됨.
	
	// 함수들에서 사용할 MYSQL 연결변수
	$db_conn = mysql_connect($server, $username, $password);
	mysql_select_db($database, $db_conn);
	mysql_query("set names utf8");
	
	
	// 경고창 띄우고 페이지 이동
	function alertAndMove($message, $location) { 
		echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><script type=\"text/javascript\"> alert('".$message."'); location.href='".$location."'; </script>";
	}	
	// 경고창만 띄움
	function alert($message) {
		echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><script type=\"text/javascript\"> alert('".$message."'); </script>";
	}
	// 경고창 띄우고 뒤로가기
	function alertAndBack($message, $step=1) { 
		echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><script type=\"text/javascript\"> alert('".$message."'); history.go(-".$step."); </script>";
	}
	
	
	
	function boardExists($bname) {
		global $db_conn;
		$query = "select * from board_info where name='".stripslashes($bname)."'";
		$result = mysql_fetch_array(mysql_query($query, $db_conn));
		if($result) return true;
		return false;
	}
	
	function boardInfo($bname) {
		global $db_conn;
		$query = "select * from board_info where name='".stripslashes($bname)."'";
		$result = mysql_fetch_array(mysql_query($query, $db_conn));
		if(!$result) return false;
		else return $result;
	}		
	
	
	
	// 새로운 글을 DB에 넣는 함수. 매개변수로 이름, 제목, 내용만 넘겨주면 됨.
	function newArticle($bname, $memberid, $title, $content) {
		global $db_conn;
		$query = "insert into board_".$bname." (memberid, title, content, writedate) values ('".$memberid."', '".$title."', '".$content."', now())";
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		return true;
	}
	
	// 글을 수정하는 함수. 하나만 바뀌었어도 매개변수에 3개 다 넣어야함. 몇번 글인지도 당연히 넘겨야함.
	function updateArticle($bname, $title, $content, $idx) {
		global $db_conn;
		$query = "update board_".$bname." set title='".$title."', content='".$content."' where idx=".$idx;
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		return true;
	}
	
	// 글을 지우는 함수. 몇번 글인지만 넘기면 알아서 지워줌. 테이블에서 지우면 auto_increment때문에 약간 이상하게 작동해서 글 제목을 날리고 글 제목으로 판별하게 함.
	function deleteArticle($bname, $idx) {
		$article = getArticle($bname, $idx);
		return updateArticle($bname, "", "DELETED\n".$article["memberid"]."\n".$article["title"]."\n\n".$article["content"], $idx);
	}
	
	// 글을 가져오는 함수. 몇번 글인지만 넘기면 알아서 가져옴.
	function getArticle($bname, $idx) {
		global $db_conn;
		$query = "select * from board_".$bname." where idx=".$idx;
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		$article = mysql_fetch_array($result);
		return $article;
	}
	
	// 모든 글을 가져오는 함수. 최근 글부터 차례대로 들어있음.
	function getAllArticle($bname) {
		global $db_conn;
		$query = "select * from board_".$bname." order by idx desc";
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		$articles = array();
		while($article = mysql_fetch_array($result))
			array_push($articles, $article);
		return $articles;
	}
	
	// 조회수를 올리는 함수. 몇번 글인지만 넘기면 알아서 올려줌.
	function updateViewcount($bname, $idx) {
		global $db_conn;
		$query = "update board_".$bname." set viewcount=viewcount+1 where idx=".$idx;
		mysql_query($query, $db_conn);
	}
	
	// 댓글수를 올리는 함수. 몇번 글인지만 넘기면 알아서 올려줌.
	function updateCommentcount($bname, $idx) {
		global $db_conn;
		$query = "update board_".$bname." set commentcount=commentcount+1 where idx=".$idx;
		mysql_query($query, $db_conn);
	}
	
	
	// 중복되는 아이디를 찾는 함수.
	function checkSame($id) {
		global $db_conn;
		$query = "select * from member where id='".$id."'";
		$result = mysql_query($query, $db_conn);
		if($result) return false;
		return true;
	}
	
	// 회원을 추가하는 함수. 아이디, 비밀번호, 이름 세개를 다 넣어야함.
	function newMember($name, $id, $pw, $p1, $p2, $p3, $m1, $m2, $m3, $email, $mailing, $web, $grade) {
		global $db_conn;
		$query = "insert into member (name, id, pw, pFirst, pSecond, pThird, mFirst, mSecond, mThird, email, mailing, website, grade)".
				 sprintf("values ('%s', '%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%s', '%s', '%s')", 
				 $name, $id, $pw, $p1, $p2, $p3, $m1, $m2, $m3, $email, $mailing, $web, $grade);
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		return true;
	}
	
	// 로그인을 하는 함수. 성공시 false를 리턴하고
	function login($id, $pw) {
		global $db_conn;
		$query = "select * from member where id='".$id."' and pw='".hash("sha256", $pw)."'";
		$result = mysql_fetch_array(mysql_query($query, $db_conn));
		if(!$result) {
			return false;
		}
		else {
			$_SESSION["loginID"] = $id;
			$_SESSION["loginPW"] = hash("sha256", $pw);
			$_SESSION["loginName"] = $result["name"];	
			$_SESSION["loginIdx"] = $result["idx"];
			$_SESSION["login"] = hash("sha256", $id.hash("sha256", $pw));
			if($result["isadmin"] == "1") $_SESSION["loginAdmin"] = "True";
			return $result;
		}
	}
	
	// 로그인 상태 확인 함수. 정상이면 true, 비정상이면 false.
	function checkLogin() {	
		if($_SESSION["login"] == hash("sha256", $_SESSION["loginID"].$_SESSION["loginPW"])) return true;
		else return false;
	}

	// 로그인 세션 파괴
	function deleteSession() {
		$_SESSION["loginID"] = $_SESSION["loginPW"] = $_SESSION["loginName"] = $_SESSION["login"] = $_SESSION["loginAdmin"] = $_SESSION["loginIdx"] = "";
	}
	
	// 사용자의 정보를 얻어오는 함수. 회원번호를 넘겨야함.
	function getUserInfo($idx) {
		global $db_conn;
		$query = "select * from member where idx='".$idx."'";
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		else return mysql_fetch_array($result);
	}
	
	
	// 댓글을 추가하는 함수. 회원번호, 글번호, 댓글 내용을 넘겨야 함.
	function newComment($bname, $memberid, $articleid, $content) {
		global $db_conn;
		$query = "insert into comment (board, articleid, memberid, content, writedate) values ('".$bname."', '".$articleid."', '".$memberid."', '".$content."', now())";
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		return true;
	}
	
	// 댓글들을 가져오는 함수. 글 번호를 넘기면 그 글에 달린 댓글을 오래된 순서로 돌려줌.
	function getComment($bname, $articleid) {
		global $db_conn;
		$query = "select * from comment where articleid=".$articleid." and board='".$bname."' order by idx asc";
		$result = mysql_query($query, $db_conn);
		if(!$result) return false;
		$comments = array();
		while($comment = mysql_fetch_array($result))
			array_push($comments, $comment);
		return $comments;
	}
		
?>